package cn.yhp.mybatis.session;

/**
 * SqlSession 用来执行SQL，获取映射器，管理事务。
 * @author yhp
 * @description 通常情况下，我们在应用程序中使用的Mybatis的API[CRUD]就是这个接口定义的方法。
 * @date 2023/11/8
 */
public interface SqlSession {

    /**
     * 根据指定的SqlID获取一条记录的封装对象
     * @param statement SqlID
     * @return
     * @param <T> 封装 之后的对象类型
     */
    <T> T selectOne(String statement);

    /**
     * 同上，允许给SQL传入参数而已
     * 一般在实际使用中，这个参数传递的是pojo，或者Map或者ImmutableMap
     * @param statement
     * @param parameter
     * @return
     * @param <T>
     */
    <T> T selectOne(String statement,Object parameter);

    /**
     *  根据Mapper接口 获取对应的Mapper代理对象
     * @param type
     * @return
     * @param <T>
     */
    <T> T getMapper(Class<T> type);
}
